QCombobox代理中信号与槽机制分析

您所在的位置:网站首页 combo slot怎么设置  QCombobox代理中信号与槽机制分析

 QCombobox代理中信号与槽机制分析

2024-01-17 19:46| 来源: 网络整理| 查看: 265

 1、QCombobox类的代理类中信号与槽的定义

class comBoxDelegate : public QStyledItemDelegate { signals: void comboxChanged(int para); public slots: void OnComboBoxChanged(int para) { emit comboxChanged(para); } } QWidget *comBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex &index ) const { QComboBox *editor = new QComboBox(parent); editor->insertItems(0, m_qlist); editor->setCurrentIndex(4); // editor->setCurrentItem(m_qlist.findIndex(m_qlist[4])); // m_pEditor = editor; connect(editor, SIGNAL(currentIndexChanged(int)), this, SLOT(OnComboBoxChanged(int))); return editor; }              QComboBox类对象editor位于类comBoxDelegate类中。

2、MainWindow槽函数定义

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) { QObject::connect(m_combobox, SIGNAL(comboxChanged(int)), this, SLOT(ResponseFreSelect(int))); } void MainWindow::ResponseFreSelect(int num) { ui->tableWidget->item(0,6)->setText(QString("%1").arg(m_Debug_Param[num])); ui->tableWidget->item(0,7)->setText(QString("%1").arg(m_Debug_Param[num])); }  comBoxDelegate类对象m_combobox位于类MainWindow类中。

我们要实现QComboBox类对象信号----------->传递到MainWindow类中,但是二者不在同一个类中,

但二者同时都与comBoxDelegate类有交集。

所以,我们就需要在comBoxDelegate类,将QCombobox类的信号currentIndexChanged(int),进行重新转发一下:

void OnComboBoxChanged(int para)  {             emit comboxChanged(para);   }

即:comBoxDelegate类的槽函数,实际上用来将转发信号,重新emit一下。

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3